Normally, web communications, including data requests and data delivery, are carried out in the TCP/IP (Transmission Control Protocol/Internet Protocol) environment via a CGI (Common Gateway Interface) application. The Web page displayed on the client browser is linked to the CGI application in a remote server through a URL (Universal Resource Locator) embedded in the Web Page. The end user at the client clicks on the URL, which launches the CGI application on the Web Server, and causes a form, typically in HTML or XML format, to be delivered to the end-user at the client. The end user at the client supplies the requested information, as a search request, an order, a user id and password, or the like, and sends the data back to the CGI program. The “send” operation, typically a mouse click on a virtual pushbutton on the screen, terminates the CGI session. That is, the CGI session is not persistent.
Meanwhile, the CGI application translates the query or information into a form or format understandable by an application running on an application server. The application server, or more specifically, the application running on the application server, can be a database application or an e-commerce application, or the like. The web server sends the query or information to the application server. The application server performs the requested task, as a database search, an order entry, or the like, and transmits a response back to the CGI application. The CGI application receives the response, translates the response, formats or reformats the response into a markup language format, initiates a new session with the client, and sends the markup language formatted information back to the client.
Within the limits of markup languages, as HTML, DHTML, XML, and the like, this is satisfactory. However, it is frequently necessary to preserve the logic, metadata, or schema of the transmitted information sent by the application server. This requires persistence across multiple requests, special tags, translation of the special tags, and the ability to send and receive objects not supported by markup languages.